#include<stdio.h>
int main()
{
    size_t size = 0;
    FILE*fp=NULL;
    if(NULL == (fp=fopen("demo.c","rb")))
    {
        perror("文件打开失败");
        return -1;
    }
    printf("文件打开成功\n");

    /*if(feof(fp))
    {
        //如果读取到文件结尾，返回一个非0值(真)
        printf("******读取到文件结尾\n");
    }*/

    printf("这是第一次循环读取文件中的内容并检查是否到结尾\n");

    char buf[BUFSIZ]={0};
    size_t ret=0;
    while((ret = fread(buf,1,sizeof(buf)-1,fp))>0)
    {
        buf[ret]='\0';
        printf("buf:%s",buf);
        size+=ret;
    }

    int feof_ret = 0;
    if(feof_ret = feof(fp))
    {
        //如果读取到文件结尾，返回一个非0值(真)
        printf("读取到文件结尾,feof_ret=%d\n",feof_ret);
    }
    else
    {
        //如果读取到文件结尾，返回一个0(假)
        printf("如果未读取到文件结尾，feof_ret=%d\n",feof_ret);
    }
    printf("第一次读取到的文件大小为：%ld\n",size);

    //注意事项：针对cleareer函数只是清除结束标志
    //但是不会移动文件指针，所以想要再次循环读取文件的话
    //需要进行移动文件指针 
    //使用clearerr函数来清除结束符
    clearerr(fp);
    feof_ret = feof(fp);
    printf("清除结束符(标志位)后,feof_ret = %d\n",feof_ret);

    printf("这是第二次循环读取文件中的内容并检查是否到结尾\n");
    while((ret = fread(buf,1,sizeof(buf)-1,fp))>0)
    {
        printf("2222\n");
        buf[ret]='\0';
        printf("buf:%s",buf);
        size+=ret;
    }

    if(feof_ret = feof(fp))
    {
        //如果读取到文件结尾，返回一个非0值(真)
        printf("读取到文件结尾,feof_ret=%d\n",feof_ret);
    }
    else
    {
        //如果读取到文件结尾，返回一个0(假)
        printf("如果未读取到文件结尾，feof_ret=%d\n",feof_ret);
    }
    printf("第二次读取到的文件大小为：%ld\n",size);

    fclose(fp);
    return 0;
}